package ar.edu.unq.persistencia.gpilla.operaciones;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeSet;

import ar.edu.unq.persistencia.gpilla.Equipo;
import ar.edu.unq.persistencia.gpilla.PartidoDeCopa;
import ar.unq.edu.persistencia.gpilla.daos.PartidoCopaDAO;

/**
 * TODO: description
 */
public class ListaVictoriasPartidoDeCopa implements Operacion<Map<Equipo, Integer>> {

    @Override
    public Map<Equipo, Integer> ejecutar() {
        Integer ganados = 0;
        Equipo ganador = null;
        List<PartidoDeCopa> lista = PartidoCopaDAO.getPartidosDeCopa();
        // System.out.println(lista);
        Map<Equipo, Integer> retorno = new HashMap<Equipo, Integer>();
        for (PartidoDeCopa partidoDeCopa : lista) {
            ganador = partidoDeCopa.getGanador();
            if (retorno.containsKey(ganador)) {
                ganados = retorno.get(ganador);
                retorno.put(ganador, (ganados + 1));
            } else {
                retorno.put(ganador, 1);
            }
        }

        TreeSet<Map.Entry<Equipo, Integer>> equiposOrdenadosTree = new TreeSet<Map.Entry<Equipo, Integer>>(
                new Comparator<Map.Entry<Equipo, Integer>>() {

                    @Override
                    public int compare(final Entry<Equipo, Integer> o1, final Entry<Equipo, Integer> o2) {
                        return o1.getValue().compareTo(o2.getValue());
                    }
                });

        equiposOrdenadosTree.addAll(retorno.entrySet());
        ArrayList<Equipo> resultado = new ArrayList<Equipo>();

        for (Entry<Equipo, Integer> entry : equiposOrdenadosTree) {
            System.out.println("Equipo : " + entry.getKey() + " - " + entry.getValue());
            resultado.add(entry.getKey());
        }

        return retorno;
    }
}
